package singleton;

/**
 * @author: zhouyang
 * @descrpition: 经典单例模式 不涉及并发
 * @time: 2019-05-24 20:16
 */
public class Singleton_Simple {

    private static Singleton_Simple singleton = null;

    //私有化构造方法
    private Singleton_Simple(){
    }

    //采用懒汉模式 用的时候再初始化 但是如果此时有并发操作 初始化的过程可能被反复执行
    //如果初始化过程涉及一些资源的io 此时会出错

    //那么假设我们在此处加上synchronized关键字 增加了代码块的同步机制 的确能保证instance不会被初始化多次
    //但是如果这个方法经常被执行 那么实际上效果是很差的 因为它占用了os的资源
    public static Singleton_Simple getInstance(){
        if(singleton == null){
            singleton = new Singleton_Simple();
        }
        return singleton;
    }
}
